Skip to content

[API实践]DeepSeek的API接口介绍

本节目标

  • 了解DeepSeek API的基本概念和功能
  • 掌握API接口调用的基本流程
  • 熟悉不同语言下的API调用方式
  • 理解API密钥的创建和管理方法
  • 掌握基础请求参数的设置与调整

DeepSeek API概述

DeepSeek是一家中国的人工智能企业,提供了强大的大语言模型API服务。通过DeepSeek API,您可以轻松地将AI能力集成到自己的应用程序中,实现文本生成、对话交互、代码编写等多种功能。

什么是API?

API(应用程序编程接口)是一种允许不同软件应用相互通信的机制。在AI领域,API使开发者能够通过发送简单的HTTP请求来调用复杂的AI模型,而无需关心底层实现细节。

类比理解:API就像餐厅的服务员,您只需点餐(发送请求),厨师(AI模型)就会准备食物(生成响应),服务员再将食物送到您的桌前(返回结果)。您无需了解厨师的烹饪细节,只需关注最终的菜品。

DeepSeek API的主要功能

DeepSeek提供的API主要包括以下功能:

  1. 聊天对话:实现和AI的多轮交互,支持上下文理解
  2. 内容生成:生成各类文本内容,如文章、故事、广告文案等
  3. 代码开发:生成、优化、解释各种编程语言的代码
  4. 逻辑推理:处理复杂的逻辑问题和数学计算
  5. 知识问答:回答各领域的专业问题

API访问凭证与管理

创建API密钥

在使用DeepSeek API之前,您需要创建API密钥(API Key):

  1. 注册并登录DeepSeek平台账户
  2. 访问API密钥管理页面
  3. 点击"创建新密钥"按钮
  4. 为密钥命名并设置权限范围
  5. 生成并安全保存您的API密钥

安全提示:API密钥相当于您账户的密码,请妥善保管,不要在公开场合或代码仓库中暴露。建议使用环境变量或配置文件来存储密钥。

密钥权限与限制

DeepSeek API密钥通常具有以下属性:

  • 调用额度:不同级别的账户有不同的调用次数限制
  • 模型访问权限:可指定密钥能够访问的模型类型
  • 有效期:可设置密钥的有效使用期限
  • IP限制:可限制特定IP地址使用密钥

API基本调用方式

DeepSeek API采用REST风格,主要通过HTTP POST请求进行调用。下面介绍三种常用的API调用方式:

1. 使用curl命令行工具

bash
curl https://api.deepseek.com/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <DeepSeek API Key>" \
  -d '{
        "model": "deepseek-chat",
        "messages": [
          {"role": "system", "content": "You are a helpful assistant."},
          {"role": "user", "content": "Hello!"}
        ],
        "stream": false
      }'

2. 使用Python

使用conda切换python环境:

创建:conda create -n py310 python=3.10(只需要执行一次)

使用:conda activate py310

验证:python --version打印3.10.x

在vscode&cursor中设置:

image-20250418165541675

安装扩展:

image-20250418165629543

创建文件01-main.py,复制代码:

python
# 安装依赖: pip install openai
from openai import OpenAI

client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "Hello"},
    ],
    stream=False
)

print(response.choices[0].message.content)

可能出的问题:

ImportError: Using SOCKS proxy, but the 'socksio' package is not installed. Make sure to install httpx using `pip install httpx[socks]`.

需要安装依赖:

bash
pip install 'httpx[socks]'

运行,打开终端:

python 01-main.py

3. 使用Node.js

javascript
// 安装依赖: npm install openai
import OpenAI from "openai";

const openai = new OpenAI({
        baseURL: 'https://api.deepseek.com',
        apiKey: '<DeepSeek API Key>'
});

async function main() {
  const completion = await openai.chat.completions.create({
    messages: [
      { role: "system", content: "You are a helpful assistant." },
      { role: "user", content: "Hello" }
    ],
    model: "deepseek-chat",
  });

  console.log(completion.choices[0].message.content);
}

main();

基本请求参数说明

DeepSeek API请求通常包含以下核心参数:

参数名类型必填说明
model字符串指定要使用的模型,如"deepseek-chat"
messages数组对话消息列表,包含角色和内容
stream布尔值是否使用流式输出,默认为false
temperature浮点数控制生成文本的随机性,0-2之间,默认为1
max_tokens整数生成内容的最大标记数,默认依模型而不同
top_p浮点数控制生成文本的多样性,0-1之间,默认为1

消息格式详解

messages参数是一个数组,每个元素是一个包含rolecontent的对象:

json
{
  "messages": [
    {"role": "system", "content": "系统指令内容"},
    {"role": "user", "content": "用户的输入内容"},
    {"role": "assistant", "content": "AI的回复内容"}
  ]
}

其中,角色(role)主要有三种:

  • system:设置AI的行为指令和背景信息
  • user:用户的输入内容
  • assistant:AI的回复内容

API响应格式

一个典型的DeepSeek API响应如下:

json
{
  "id": "cmpl-123abc456def",
  "object": "chat.completion",
  "created": 1677858242,
  "model": "deepseek-chat",
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "您好!有什么我可以帮助您的吗?"
      },
      "finish_reason": "stop",
      "index": 0
    }
  ],
  "usage": {
    "prompt_tokens": 11,
    "completion_tokens": 15,
    "total_tokens": 26
  }
}

主要字段说明:

  • id:响应的唯一标识符
  • choices:包含模型生成的回复内容
  • finish_reason:标记生成结束的原因("stop"表示自然结束,"length"表示达到设定的最大长度)
  • usage:标记使用统计,用于计费和监控

流式输出模式

在实时交互场景中,可以使用流式输出(stream=true)来逐步获取生成内容,提升用户体验:

python
# Python流式输出示例
response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "user", "content": "给我讲个故事"}
    ],
    stream=True  # 开启流式输出
)

# 逐步处理和显示生成内容
for chunk in response:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

类比理解:普通模式像是等待一封完整的邮件到达,而流式输出则像是在实时观看别人写信的过程,能够立即看到每个新写下的字。

本节小结

  • DeepSeek API是调用大语言模型能力的接口工具
  • API密钥是访问API的凭证,需要妥善管理
  • API调用可以通过curl、Python、Node.js等多种方式实现
  • 基本请求包含模型指定、消息内容、生成参数等
  • 流式输出可以提升交互体验

实践任务

  1. 注册DeepSeek账户并创建自己的API密钥
  2. 尝试使用三种不同方式调用API进行简单对话
  3. 调整温度参数,观察生成结果的差异
  4. 尝试流式输出模式,体验实时生成效果

下节预告

在下一节中,我们将深入探讨DeepSeek API的高级参数设置和调优方法,学习如何通过精确控制API参数来获得更符合需求的输出结果。